From 210a747ff082796fb28ee3a626be9e6bff0ea722 Mon Sep 17 00:00:00 2001 From: Daniel Stone Date: Wed, 27 Apr 2016 14:06:38 +0200 Subject: [PATCH] wayland: Ignore NoSymbol keys NoSymbol is not a valid GDK symbol (it only has the concept of VoidSymbol, for some reason, which is neither the same thing nor produced by any sane keymap). Passing NoSymbol events through to GTK+ apps is unlikely to produce anything useful. In particular, this meant VTE would scroll to the end of the buffer when pressing Fn (required for Page Up/Down on Macs), as it was receiving a keypress that wasn't a modifeir. This does not happen on X11, as the KEY_FN keycode is above 255, so does not get sent to clients. https://bugzilla.gnome.org/show_bug.cgi?id=764825 --- gdk/wayland/gdkdevice-wayland.c | 2 ++ gdk/wayland/gdkkeys-wayland.c | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/gdk/wayland/gdkdevice-wayland.c b/gdk/wayland/gdkdevice-wayland.c index 8d0a61e099..ae564ab966 100644 --- a/gdk/wayland/gdkdevice-wayland.c +++ b/gdk/wayland/gdkdevice-wayland.c @@ -1827,6 +1827,8 @@ deliver_key_event (GdkWaylandSeat *seat, xkb_keymap = _gdk_wayland_keymap_get_xkb_keymap (keymap); sym = xkb_state_key_get_one_sym (xkb_state, key); + if (sym == XKB_KEY_NoSymbol) + return; seat->pointer_info.time = time_; seat->key_modifiers = gdk_keymap_get_modifier_state (keymap); diff --git a/gdk/wayland/gdkkeys-wayland.c b/gdk/wayland/gdkkeys-wayland.c index a780e9d9c2..01cdd04383 100644 --- a/gdk/wayland/gdkkeys-wayland.c +++ b/gdk/wayland/gdkkeys-wayland.c @@ -354,7 +354,7 @@ gdk_wayland_keymap_translate_keyboard_state (GdkKeymap *keymap, if (consumed_modifiers) *consumed_modifiers = get_gdk_modifiers (xkb_keymap, consumed); - return TRUE; + return (sym != XKB_KEY_NoSymbol); } static guint -- 2.30.2